import { Option, SysMenu } from "@/api/interface/index";
import { CANROCNET } from "@/api/config/servicePort";
import http from "@/api";

/**
 * 新增菜单
 *
 * @param params 菜单表单
 * @returns 返回是否成功
 */
export const addMenuApi = (params: SysMenu.Form) => {
  return http.post<boolean>(`${CANROCNET}/api/sys-menu/addition`, params);
};

/**
 * 编辑菜单
 *
 * @param params 菜单表单
 * @returns 返回是否成功
 */
export const editMenuApi = (params: SysMenu.Form) => {
  return http.post<boolean>(`${CANROCNET}/api/sys-menu/edit`, params);
};

/**
 * 启用/禁用菜单
 *
 * @param params 菜单Id
 * @returns 返回是否成功
 */
export const switchEnableMenuApi = (params: { id: string }) => {
  return http.post<boolean>(`${CANROCNET}/api/sys-menu/enable`, params);
};

/**
 * 删除菜单
 *
 * @param params 菜单Id
 * @returns 返回是否成功
 */
export const deleteMenuApi = (params: { ids: string[] }) => {
  return http.post<boolean>(`${CANROCNET}/api/sys-menu/del`, params);
};

/**
 * 获取菜单列表
 *
 * @param params 菜单查询参数
 * @returns 返回菜单列表
 */
export const getMenuTreeApi = (params: SysMenu.Params) => {
  return http.get<SysMenu.Result[]>(`${CANROCNET}/api/sys-menu/tree`, params);
};

/**
 * 获取已启用的菜单列表
 *
 * @returns 返回菜单列表
 */
export const getEnableMenuTreeApi = () => {
  return http.get<SysMenu.Result[]>(`${CANROCNET}/api/sys-menu/tree`, { isEnable: true }, { loading: false });
};

/**
 * 获取菜单级联列表
 *
 * @returns 返回菜单级联列表
 */
export const getMenuCascaderOptionApi = () => {
  return http.get<Option.CascadeOption[]>(`${CANROCNET}/api/sys-menu/cascader-option`, {}, { loading: false });
};
